/** 引入Ui组件库 */
import * as ui from 'qveui';
import 'qveui/dist/fonts/iconfont.css';

import { version } from 'qveui';

// 导航组件
import NavTop from './Nav/top.vue';

/** vue原生方法 */
import * as $vue from 'vue';

/**
 * 本地组件库
 */
const components = {
  NavTop
};

/**
 * vue 组件挂载
 * @param {*} app
 * @param {*} opts
 */
const install = function (app, opts) {
  opts = opts || {
    //输出日志
    log: { isPrint: true },
    // 外挂
    plus: true,
    // 初始化原生函数扩展
    init: true
  };

  // 判断是否安装
  if (install.installed) return;

  // 安装组件库
  Object.keys(components).forEach((key) => {
    app.component(key, components[key]);
  });

  // 引入组件库
  // opts.prefix = 'Q';
  app.use(ui.install, {
    // prefix:'自定义组件使用前缀，避免跟其它项目组件重名'
    //输出日志
    ...opts,
    config: {
      ui: {
        // 是否小屏幕
        isMobile: document.body.clientWidth < 1024
      }
    }
  });

  // 全局挂载
  let $plus = {
    version,
    vue: $vue,
    ui,
    loading: ui.loading,
    confirm: ui.confirm, //对话
    message: ui.message, //消息
    frame: ui.frame //弹窗
  };

  // 日志
  let _resp = `version:${version}`;

  if (typeof window !== 'undefined' && opts.plus) {
    if (window.$plus) {
      // 添加其它自定义外挂
      for (let key in window.$plus) {
        $plus[key] = window.$plus[key];
      }
    }

    // 全局原生挂载
    window.$plus = $plus;
    // window.$qveui = qveui;
    // window.$quick = quick;
    _resp += ';window.$plus';
    //&& window.Vue
    // Object.defineProperty(window, '$qveui', qveui);
    // console.log(window.$qveui.version, 'win');
    // console.log(window.$vue, 'win');
  }

  // 调试日志
  if (typeof opts.log !== 'undefined') {
    //调试日志输出
    console.log('quick-vue-ui', _resp);
  }
};

/**
 * 导出QuickVueUi组件库
 */
export * from 'qveui';

// 导出
export default {
  install
};
